package com.yangfan.thread.thread_wangwenjun02;

import java.util.Optional;
import java.util.concurrent.CountDownLatch;

/**
 * @description: 线程的 优先级 、 名称 、 线程id
 * @author: yangfan
 * @date: Created in 2020/1/23 0023 16:40
 * @modified By:
 *
 * 线程名称：线程的名字
 * 线程id：主要用于 打堆栈信息 分析程序运行状态的
 * 线程优先级：优先级越高 这个线程执行的可能性就越高，相较于低优先级的
 *
 * JOIN： 使主线程处于等待状态，子线程执行完成后才执行主线程
 * CountDownLatch：JDK 1.5 以后提供 JUC 包 线程协同工具类
 *
 */
public class ThreadSimpleAPI {


    public static void main(String[] args) throws InterruptedException {


//        Thread t = new Thread(() -> {
//            System.out.println(1);
//        },"t");
//        t.start();
//        System.out.println(t.getName());//返回线程名
//        System.out.println(t.getId());//返回线程id 线程ID主要用于 在找问题的时候
//        System.out.println(t.getPriority());//线程优先级


        /**
         * Thread join：主线程进行等待子线程
         */

        CountDownLatch countDownLatch = new CountDownLatch(2);

        Thread t1 = new Thread(() -> {
            for (int i = 0; i <= 5000; i++) {
                Optional.of(Thread.currentThread().getName()+"值:"+i).ifPresent(System.out::println);
            }
            countDownLatch.countDown();
        },"t1");

        Thread t2 = new Thread(() -> {
            for (int i = 0; i <= 5000; i++) {
                Optional.of(Thread.currentThread().getName()+"值:"+i).ifPresent(System.out::println);
            }
            countDownLatch.countDown();
        },"t2");


        t1.start();
        t2.start();
        //t1.join();
        //t2.join();

        countDownLatch.await();

        Optional.of("主线程要执行了").ifPresent(System.out::println);

        /**
         * 自己等待自己结束
         */
        //Thread.currentThread().join();
    }

}
